package main

import "fmt"

func main() {

	a := Calc(1, 1, add)
	fmt.Println("a = ", a)

	b := Calc(1, 1, minus)
	fmt.Println("b = ", b)

	c := Calc(1, 1, mul)
	fmt.Println("c = ", c)

	d := Calc(1, 1, mod)
	fmt.Println("d = ", d)
}

type FuncType func(int, int) int

// 函数的参数有一个是函数类型, 这个函数就是回调函数
// 这个计算器可以实现四则运算
// 多态 调用同一个接口, 不同的表现, 可以实现不同的表现 实现加减乘除
func Calc(a, b int, fTest FuncType) (result int) {
	result = fTest(a, b) // 这个函数还没有实现
	return
}

// 实现加法
func add(a, b int) int {
	return a + b
}

// 实现减法
func minus(a, b int) int {
	return a - b
}

// 实现乘法
func mul(a, b int) int {
	return a * b
}

// 实现除法
func mod(a, b int) int {
	return a / b
}